USE siscon;
GO

CREATE PROCEDURE sp_insert_session
       @user_id      INT,
       @session_uuid varchar(100) OUTPUT
AS 
BEGIN 
     SET NOCOUNT ON 

DECLARE @inserted_row AS TABLE(session_uuid varchar(100) )

INSERT INTO sis_session (user_id, is_active, created_by, creation_date, last_updated_by, last_update_date) OUTPUT Inserted.session_uuid into @inserted_row VALUES (@user_id, 1, 0, sysdatetime(), 0, sysdatetime() )

Select @session_uuid = session_uuid from @inserted_row
END

GO

USE msdb ;
GO

DECLARE @jobId binary(16)

SELECT @jobId = job_id FROM msdb.dbo.sysjobs WHERE (name = N'ExpireSession')
IF (@jobId IS NOT NULL)
BEGIN
    EXEC sp_delete_job
    @job_name = N'ExpireSession' ;
END

GO

EXEC dbo.sp_add_job
    @job_name = N'ExpireSession' ;
GO

EXEC sp_add_jobstep
    @job_name = N'ExpireSession',
    @step_name = N'Expire sessions after 30 minutes of inactivity',
    @subsystem = N'TSQL',
    @command = N'UPDATE sis_session SET is_active = 0 WHERE DATEDIFF(minute, last_update_date, SYSDATETIME()) >= 30',
    @database_name = 'siscon' ;
GO

EXEC dbo.sp_add_schedule
    @schedule_name = N'30minutes', --Cualquier nombre
    @freq_type = 4,				   --Este '4' quiere decir que se corre a diario
    @freq_interval = 1,			   --Con que tanta frecuencia basandote en @freq_type, en este caso: A diario, todos los dias
    @freq_subday_type = 0x4,	   --Este '0x4' quiere decir que el intervalo (@freq_subday_interval) son minutos
    @freq_subday_interval = 10	   --Se corre cada 10 minutos
GO

EXEC sp_attach_schedule			   
   @job_name = N'ExpireSession',   --Nombre del proceso que se va a ejecutar, tal y como esta en sp_add_job
   @schedule_name = N'30minutes';  --Nombre del proceso que se va a ejecutar, tal y como esta en sp_add_schedule
GO

EXEC dbo.sp_add_jobserver
    @job_name = N'ExpireSession';  --Agrega el proceso (job) al servidor
GO

--http://msdn.microsoft.com/en-us/library/ms190268.aspx para detalles